<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <com1></com1>
        <com2></com2>
    </div>
    <script src='vue.js'></script>
    
    <script type="text/html" id='com1'>
        <div>
            <h1>第一个组件</h1>
            <input v-model.number='num' v-on:input='passValue'>
        </div>
    </script>
    <script type="text/html" id="com2">
        <div>
            <h1>第二个组件</h1>
            <p>{{v}}</p>
        </div>
    </script>
    <script>
        // 创建一个空的Vue对象，作为事件总线使用，必须是一个全局变量
        var bus = new Vue()

        // 注册组件
        Vue.component('com1',{
            template:'#com1',
            data:function(){
                return {
                    num:1
                }
            },
            methods:{
                passValue(){
                    // 使用总线发射的事件，任何其他组件都可以接受
                    bus.$emit('give',this.num)
                }
            }
        })
        Vue.component('com2',{
            template:'#com2',
            data:function(){
                return {
                    v:0
                }
            },
            /*
            mounted函数，会在组件被渲染完毕之后调用 组件生命周期函数
            */
            mounted:function(){
                // 任何组件都可以监听总线中的事件
                bus.$on('give',function(e){
                    console.log(this)
                    this.v = e
                }.bind(this))
            }
        })
        // 创建组件
        new Vue({
            el:'#app',
            data:{
                d:0
            },
        })
    </script>
</body>
</html>